﻿#define _CRT_SECURE_NO_WARNINGS
//计算n的阶乘（不考虑溢出），n的阶乘就是1~n的数字累积相乘。
//道n的阶乘的公式： n！ =  n ∗ (n − 1)!

//#include<stdio.h>
//
//int fact(int n)//n>=0
//{
//	if (n == 0)
//	{
//		return 1;
//	}
//	else
//	{
//		return n * fact(n - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fact(n);
//	printf("ret = %d\n", ret);
//	return 0;
//}

//#include<stdio.h>
//
//int main()
//{
//	int i = 0;
//	int ret = 1;
//	int n = 0;
//
//	scanf("%d", &n);
//
//	for (i = 1; i <= n; i++)
//	{
//		ret *= i;
//	}
//
//	printf("ret = %d\n", ret);
//	return 0;
//}


//输⼊⼀个整数m，按照顺序打印整数的每⼀位。
//⽐如：
//输⼊：1234 输出：1 2 3 4
//输⼊：520 输出：5 2 0

//#include<stdio.h>
//
//void print(int n)//1234
//{
//	while (n)
//	{
//			printf("%d ", n % 10);//4
//			n = n / 10;//123
//	}
//}
//
//int main()
//{
//	int n = 0;
//
//	scanf("%d", &n);
//
//	print(n);
//	return 0;
//}
//
// 
// print(123)...4
// print(12)....3
// print(1).....2
// n < 9  ......1
//

//#include<stdio.h>
//
//void print(int n)
//{
//	if (n > 9)
//	{
//		print(n / 10);
//	}
//	printf("%d ", n % 10);
//}
//int main()
//{
//	int n = 0;
//	//输入
//	scanf("%d", &n);
//	//函数调用
//	print(n);
//
//	return 0;
//}

//求第n个斐波那契数
//         1                    n<3
// Fib(n) 
//         Fib(n-1) + Fib(n-2)  n>=3
//

//#include<stdio.h>
//
//int Fib(int n)//重复计算多余的值，不推荐
//{
//	if (n < 3)
//	{
//		return 1;
//	}
//	else
//	{
//		return Fib(n - 1) + Fib(n - 2);//递归
//	}
//}
//int main()
//{
//	int n = 0;
//	//输入
//	scanf("%d", &n);
//	//调用函数
//	int ret = Fib(n);
//	//输出
//	printf("ret = %d\n", ret);
//	return 0;
//}

//用迭代的方法来算

//#include<stdio.h>
//
//int Fib(int n)//重复计算多余的值，不推荐
//{
//	int a = 1;
//	int b = 1;
//	int c = 1;
//
//	while (n >= 3)
//	{
//		c = a + b;
//		b = a;
//		a = c;
//		n--;
//	}
//
//	return c;
//}
//int main()
//{
//	int n = 0;
//	//输入
//	scanf("%d", &n);
//	//调用函数
//	int ret = Fib(n);
//	//输出
//	printf("ret = %d\n", ret);
//	return 0;
//}


//写⼀个史上最简单的C语⾔递归代码：
//#include<stdio.h>
//int main()
//{
//	printf("haha\n");
//	main();//在 main 函数又调用了 main 函数
//	return 0;
//}
//举例：
//	 5！= 5*4*3*2*1
//	 4！= 4*3*2*1
//所以：5！= 5*4！

//计算n的阶乘（不考虑溢出），n的阶乘就是1~n的数字累积相乘

//#include<stdio.h>
//
//int Fact(int n)// n>=0
//{
//	if (n == 0)
//	{
//		return 1;
//	}
//	else
//	{
//		return n * Fact(n - 1);//函数递归
//	}
//}
//
//int main()
//{
//	int n = 0;
//	//输入
//	scanf("%d", &n);
//	//函数调用
//	int ret = Fact(n);
//	//输出
//	printf("%d\n", ret);
//	return 0;
//}

//输⼊⼀个整数m，按照顺序打印整数的每⼀位。
//输入：1234  输出：1 2 3 4
// 输入：385   输出：3 8 5

//1234%10就能得到4，然后1234/10就得到123，这就相当于去掉了4；
//123%10就能得到3，然后123/10就能得到12，这就相当于去掉了3；
//12%10就能得到2，然后12/10就能得到1，这就相当于去掉2；
//1%10就能得到1，然后1/10就能得到0，程序结束。

//Print(n)
//如果n是1234，那就表示为
//Print(1234)//打印1234的每一位
//
//其中1234中的4可以通过 %10 得到，那么
//Print(1234)就可以拆分为两步：
//1.Print(1234/10)//打印123的每一位
//2.printf(1234%10)//打印4
//完成上述2步，那就完成了1234每一位的打印
//
//那么Print(123)又可以拆分为：Print(123/10) + printf(123%10)
//
//以此类推下去，就有：
//   Print(1234)
//==>Print(123)                    + Print(4)
//==>Print(12)           + Print(3)
//==>Print(1)  + Print(2)
//==>Print(1)

//#include<stdio.h>
//
//void Print(int n)
//{
//	if (n > 9)
//	{
//		Print(n / 10);
//	}
//	printf("%d ", n%10);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Print(n);
//	return 0;
//}

//计算n的阶乘，也是可以产⽣1~n的数字累计乘在⼀起的
//#include<stdio.h>
//
//int main()
//{
//	int i = 0;
//	int ret = 1;
//	int n = 0;
//
//	scanf("%d", &n);
//	
//	for (i = 1; i <= n; i++)
//	{
//		ret *= i;
//	}
//
//	printf("%d\n", ret);
//
//	return 0;
//}

//#include<stdio.h>
//
//int fact(int n)//n>=0
//{
//	int i = 0;
//	int ret = 1;
//
//	for (i = 1; i <= n; i++)
//	{
//		ret *= i;//直接累乘
//	}
//
//	return ret;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fact(n);
//	printf("ret = %d\n", ret);
//	return 0;
//}


//求第n个斐波那契数

//#include<stdio.h>
//
//int Fib(int n)
//{
//	if (n <= 2)
//	{
//		return 1;
//	}
//	else
//	{
//		return Fib(n - 1) + Fib(n - 2);//函数递归
//	}
//}
//int main()
//{
//	int n = 0;//n的初始化
//	//输入
//	scanf("%d", &n);
//    //函数的调用
//	int ret = Fib(n);
//	//输出
//	printf("%d\n", ret);
//
//	return 0;
//}

//#include<stdio.h>
//
//int count = 0;//全局变量
//
//int Fib(int n)
//{
//	if (n == 2)
//	{
//		count++;//统计第二个斐波那契数被计算的次数
//	}
//	if (n <= 2)
//	{
//		return 1;
//	}
//	else
//	{
//		return Fib(n - 1) + Fib(n - 2);//函数递归
//	}
//}
//
//int main()
//{
//	int n = 0;//n的初始化
//	//输入
//	scanf("%d", &n);
//	//函数的调用
//	int ret = Fib(n);
//	//输出
//	printf("%d\n", ret);
//	printf("\ncount = %d\n", count);
//
//	return 0;
//}

//#include<stdio.h>
//
//int Fib(int n)
//{
//	int a = 1;
//	int b = 1;
//	int c = 1;
//
//	while (n >= 2)
//	{
//		c = a + b;
//		a = b;
//		b = c;
//		n--;
//	}
//
//	return c;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fib(n);
//	printf("%d\n", ret);
//	return 0;
//}